First, the relationship between each species’ trait values and the species’ monoculture biomass.
adam.monocultures <- adam %>%
filter(Ninitial == 1,
Year == 200) %>%
rename(monoculture.biomass = Biomass) %>%
select(-Ninitial, -Stage, -Year, -Rep) %>%
pivot_longer(c(-SpeciesID, -monoculture.biomass),
names_to = "trait",
values_to = "trait.value")
ggplot(adam.monocultures) +
geom_point(aes(x = trait.value,
y = monoculture.biomass,
color = SpeciesID)) +
facet_grid(cols = vars(trait),
scales = "free_x") +
labs(x = "Trait value",
y = "Monoculture biomass") +
theme_bw() +
theme(aspect.ratio = 1,
legend.position = "none")The same plot, within 3D space:
adam.monocultures.3D <- adam %>%
filter(Ninitial == 1,
Year == 200) %>%
rename(B.mono = Biomass) %>%
select(-Ninitial, -Stage, -Year, -Rep)
plot_ly(adam.monocultures.3D,
x = ~pNi,
y = ~no3i,
z = ~abmi,
color = ~log(B.mono),
mode = "markers",
type = "scatter3d")For Adam’s model, the patterns observed in the 32-species mixtures are similar to those seen in the 64-species mixture. Therefore, I omit the 64-species mixture from this analysis.
adam.communities <- adam %>%
filter(Ninitial == 32,
Year %in% c(100, 200)) %>%
group_by(Stage, SpeciesID, abmi, no3i, pNi) %>%
summarise(mean.biomass = mean(Biomass))
adam.communities <- adam.communities %>%
pivot_longer(c(-Stage, -SpeciesID, -mean.biomass),
names_to = "trait",
values_to = "trait.value")
ggplot(adam.communities) +
geom_point(aes(x = trait.value,
y = mean.biomass,
color = SpeciesID)) +
facet_grid(cols = vars(trait),
rows = vars(Stage),
scales = "free_x") +
labs(x = "Trait value",
y = "Mean biomass in mixture") +
theme_bw() +
theme(aspect.ratio = 1,
legend.position = "none")adam.mixture.3D <- adam %>%
filter(Ninitial == 32,
Year == 200) %>%
rename(mixture.biomass = Biomass) %>%
filter(mixture.biomass > 0) %>%
select(-Ninitial, -Stage, -Year, -Rep)
plot_ly(adam.mixture.3D,
x = ~pNi,
y = ~no3i,
z = ~abmi,
color = ~log(mixture.biomass),
mode = "markers",
type = "scatter3d")Mixture biomass is expressed as a log.
It may also be interesting to observe how species’ biomass production changes from when in monoculture to when it is incorporated into a community. Therefore, at the end of the isolation phase, I plot each species within 3D trait space, tying the color of each point to the average change in that species’ biomass, i.e. (community.biomass - monoculture.biomass) / monoculture.biomass.
adam.communities <- adam %>%
filter(Ninitial == 32,
Stage == "isolation") %>%
group_by(Stage, SpeciesID, abmi, no3i, pNi) %>%
summarise(mean.biomass = mean(Biomass))
adam.communities <- inner_join(adam.communities, adam.monocultures)
adam.communities <- adam.communities %>%
mutate(delta.biomass = (mean.biomass - monoculture.biomass) / monoculture.biomass)
plot_ly(adam.communities,
x = ~pNi,
y = ~no3i,
z = ~abmi,
color = ~delta.biomass,
mode = "markers",
type = "scatter3d")There tends to be one a few dominant competitors with very high monoculture biomasses (abmi) that eliminate most of the other plants species, as well as a large number of significantly smaller species that have low aboveground tissue nitrogen concetrations (pNi) as well as low nitrogen R* (no3i). These smaller species suffer very little from competition within the community.
adam.communities <- adam %>%
filter(Ninitial == 32,
Year > 5) # Because species begin the similation with biomass levels of 0
adam.communities <- adam.communities %>%
group_by(SpeciesID, Rep) %>%
arrange(Year) %>%
mutate(isDead = (Biomass == 0)) %>%
filter(isDead | (!isDead & Year == max(Year))) %>%
filter(Year == first(Year))
adam.communities <- adam.communities %>%
group_by(SpeciesID, abmi, no3i, pNi) %>%
summarise(Year = mean(Year))
adam.communities <- adam.communities %>%
pivot_longer(c(-SpeciesID, -Year),
names_to = "trait",
values_to = "trait.value")
ggplot(adam.communities) +
geom_point(aes(x = trait.value,
y = Year,
color = SpeciesID)) +
facet_grid(cols = vars(trait),
scales = "free") +
labs(x = "Trait value",
y = "Time to extinction") +
theme_bw() +
theme(aspect.ratio = 1,
legend.position = "none")adam.communities <- adam %>%
filter(Ninitial == 32,
Year > 5) # Because species begin the similation with biomass levels of 0
adam.communities <- adam.communities %>%
group_by(SpeciesID, Rep) %>%
arrange(Year) %>%
mutate(isDead = (Biomass == 0)) %>%
filter(isDead | (!isDead & Year == max(Year))) %>%
filter(Year == first(Year))
adam.communities <- adam.communities %>%
group_by(SpeciesID, abmi, no3i, pNi) %>%
summarise(t.extinction = mean(Year))
plot_ly(adam.communities,
x = ~pNi,
y = ~no3i,
z = ~abmi,
color = ~t.extinction,
mode = "markers",
type = "scatter3d")